package com.shareware.common.utils

import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import java.util.*

/**
 * desc: 功能描述
 * email: mobiledeveloper@qq.com
 */
object RxManager {

    private val manager = HashMap<String, Disposable>()
    private val disposables = CompositeDisposable()

    /**
     * 添加disposable
     */
    fun addRxDisposable(key: String, disposable: Disposable) {
        if (hasDisposable(key)) {
            manager[key]?.let { disposables.remove(it) }
        }
        manager[key] = disposable
        disposables.add(disposable)
    }

    /**
     * 删除disposable
     */
    fun removeRxDisposable(key: String) {
        if (hasDisposable(key)) {
            manager[key]?.let { disposables.remove(it) }
            manager.remove(key)
        }
    }

    /**
     * 清空rx
     */
    fun clear() {
        manager.clear()
        disposables.clear()
    }

    /**
     * 是否存在请求
     */
    fun hasDisposable(key: String): Boolean {
        return manager.containsKey(key)
    }
}